home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Samples / Managed / Direct3D / Scripting / Script2.cs < prev    next >
Encoding:
Text File  |  2004-09-27  |  4.9 KB  |  158 lines

  1. //--------------------------------------------------------------------------------------
  2. // File: Script3.cs
  3. //
  4. // Scripting code for Managed Scripting sample
  5. //
  6. // Copyright (c) Microsoft Corporation. All rights reserved.
  7. //--------------------------------------------------------------------------------------
  8. using System;
  9.  
  10. /// <summary>
  11. /// Handles scripts for the ShadowVolume sample
  12. /// </summary>
  13. class ScriptClass
  14. {
  15.     // Constants 
  16.     const float MaxMovementSpeed = 3.5f; // Maximum movement speed
  17.     const float RotationSpeed = 0.01f; // Constant rotation speed
  18.     const float MaxX = 2.0f;
  19.     const float MaxY = 2.0f;
  20.     const float MaxZ = 2.0f;
  21.     const float MinX = -2.0f;
  22.     const float MinY = 0.0f;
  23.     const float MinZ = -2.0f;
  24.  
  25.     // Variables
  26.     static float MovementSpeedX = 0.85f;
  27.     static float MovementSpeedY = 0.85f;
  28.     static float MovementSpeedZ = 0.85f;
  29.     static double LastUpdateTime;
  30.     static int XDirection = 1;
  31.     static int YDirection = 1;
  32.     static int ZDirection = 1;
  33.     static float storedX = MinX;
  34.     static float storedY = MinY;
  35.     static float storedZ = MinZ;
  36.     
  37.     // Rotation variables
  38.     static bool isRotationX = false;
  39.     static bool isRotationY = false;
  40.     static bool isRotationZ = false;
  41.     static float rotationXSpeed = 0.0f;
  42.     static float rotationYSpeed = 0.0f;
  43.     static float rotationZSpeed = 0.0f;
  44.  
  45.     // Rotation variables
  46.     static float rotationX = 0.0f;
  47.     static float rotationY = 0.0f;
  48.     static float rotationZ = 0.0f;
  49.  
  50.     static Random rndGenerator = new Random();
  51.     /// <summary>
  52.     /// Update the position of the player
  53.     /// </summary>
  54.     public static void UpdatePosition(double appTime, ref float x, ref float y, ref float z)
  55.     {
  56.         // Make sure some time has elapsed
  57.         float elapsedTime = (float)(appTime - LastUpdateTime);
  58.         LastUpdateTime = appTime;
  59.         if (elapsedTime <= 0.0f)
  60.             return; // Nothing to do
  61.         
  62.         // Increase the X param some
  63.         storedX += (MovementSpeedX * elapsedTime) * XDirection;
  64.         // Now Y
  65.         storedY += (MovementSpeedY * elapsedTime) * YDirection;
  66.         // Finally Z
  67.         storedZ += (MovementSpeedZ * elapsedTime) * ZDirection;
  68.  
  69.         // Do Param checks
  70.         if (storedX >= MaxX)
  71.         {
  72.             MovementSpeedX = MaxMovementSpeed * (float)rndGenerator.NextDouble();
  73.             storedX = MaxX;
  74.             XDirection *= -1;
  75.             isRotationY = true;
  76.             rotationYSpeed += (RotationSpeed * XDirection);
  77.         }
  78.         else if (storedX <= MinX)
  79.         {
  80.             MovementSpeedX = MaxMovementSpeed * (float)rndGenerator.NextDouble();
  81.             storedX = MinX;
  82.             XDirection *= -1;
  83.             isRotationY = true;
  84.             rotationYSpeed += (RotationSpeed * XDirection);
  85.         }
  86.         if (storedY >= MaxY)
  87.         {
  88.             MovementSpeedY = MaxMovementSpeed * (float)rndGenerator.NextDouble();
  89.             storedY = MaxY;
  90.             YDirection *= -1;
  91.             isRotationZ = true;
  92.             rotationZSpeed += (RotationSpeed * YDirection);
  93.         }
  94.         else if (storedY <= MinY)
  95.         {
  96.             MovementSpeedY = MaxMovementSpeed * (float)rndGenerator.NextDouble();
  97.             storedY = MinY;
  98.             YDirection *= -1;
  99.             isRotationZ = true;
  100.             rotationZSpeed += (RotationSpeed * YDirection);
  101.         }
  102.         if (storedZ >= MaxZ)
  103.         {
  104.             MovementSpeedZ = MaxMovementSpeed * (float)rndGenerator.NextDouble();
  105.             storedZ = MaxZ;
  106.             ZDirection *= -1;
  107.             isRotationX = true;
  108.             rotationXSpeed += (RotationSpeed * ZDirection);
  109.         }
  110.         else if (storedZ <= MinZ)
  111.         {
  112.             MovementSpeedZ = MaxMovementSpeed * (float)rndGenerator.NextDouble();
  113.             storedZ = MinZ;
  114.             ZDirection *= -1;
  115.             isRotationX = true;
  116.             rotationXSpeed += (RotationSpeed * ZDirection);
  117.         }
  118.  
  119.         // Save the variables now
  120.         x = storedX;
  121.         y = storedY;
  122.         z = storedZ;
  123.  
  124.         // Update rotation if need be
  125.         if (isRotationX)
  126.             rotationX += rotationXSpeed;
  127.         if (isRotationY)
  128.             rotationY += rotationYSpeed;
  129.         if (isRotationZ)
  130.             rotationZ += rotationZSpeed;
  131.  
  132.     }
  133.  
  134.     /// <summary>
  135.     /// Update the players rotation on the X axis
  136.     /// </summary>
  137.     public static void UpdateRotationX(double appTime, ref float a)
  138.     {
  139.         a = rotationX;
  140.     }
  141.  
  142.     /// <summary>
  143.     /// Update the players rotation on the Y axis
  144.     /// </summary>
  145.     public static void UpdateRotationY(double appTime, ref float a)
  146.     {
  147.         a = rotationY;
  148.     }
  149.  
  150.     /// <summary>
  151.     /// Update the players rotation on the Z axis
  152.     /// </summary>
  153.     public static void UpdateRotationZ(double appTime, ref float a)
  154.     {
  155.         a = rotationZ;
  156.     }
  157. }
  158.